2008-03-01から1ヶ月間の記事一覧
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) p tab.heading_color tab.show_lines = :all tab.heading_color = Color::RGB::Blue p tab.heading_color data = [ { "col1" => "fo…
Java FAQ、『Java の質問箱』 とはちょっと離れて。 そういえば、C 言語っぽい文字種類の判定関数の話は、どこの項目に書いてある? public class C2008033100 { public static void main(String[] args) { char c; c = 'a'; System.out.println(Character.i…
begin でなく、push_state, pop_state を使うこともできる。 #!/usr/bin/env python import ply.lex as lex states = ( ('foo', 'exclusive'), ) tokens = ( 'A', 'PLUS', ) t_A = r'a' t_ANY_PLUS = r'\+' t_ANY_ignore = ' \t\n' t_foo_A = r'b' def t_beg…
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) tab.title = "TITLE" p tab.title_color tab.show_lines = :all tab.title_color = Color::RGB::Blue p tab.title_color data = [ {…
Java FAQ、『Java の質問箱』 とはちょっと離れて。 そういえば、C 言語っぽい文字の扱いという話は、どこの項目に書いてある? public class C2008033000 { public static void main(String[] args) { char c = 'a'; System.out.println(c); System.out.pri…
「t_foo_INITIAL_PLUS = r'\+'」のように複数の状態「foo」「INITIAL」(初期状態)を指定できるようだ。 ('exclusive' でも全条件だったら ANY を使えば良いだけだけど) #!/usr/bin/env python import ply.lex as lex states = ( ('foo', 'exclusive'), ) tok…
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) tab.title = "TITLE" p tab.font_size p tab.heading_font_size p tab.title_font_size tab.show_lines = :all tab.title_font_size…
Java FAQ、『Java の質問箱』 とはちょっと離れて。 そういえば、そもそも Integer とかって何?という話は、どこの項目に書いてある? public class C2008032900 { public static void main(String[] args) { int i = 1; Integer I; I = new Integer(i); Sy…
Flex のマニュアルの例を使ってFlex のマニュアルで言うところの包含的スタート状態(%s) #!/usr/bin/env python import ply.lex as lex states = ( ('state1', 'inclusive'), ) tokens = ( 'ONE', 'THREE', ) def t_state1_ONE(t): r'one' print "two" retur…
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) p tab.font_size p tab.heading_font_size tab.show_lines = :all tab.heading_font_size = 20 data = [ { "col1" => "foo", "col2"…
数値 -> 文字列: String.valueOf(x) か new Integer(i).toString() か Integer.toString(i) など 数値 -> n進数の文字列: Integer.toBinaryString(i), Integer.toOctalString(i), Integer.toString(i, n), Integer.toHexString(i) など 数値オブジェクト -…
機能の詳細はともかく、とりあえず試してみる #!/usr/bin/env python import ply.lex as lex states = ( ('foo', 'exclusive'), ) tokens = ( 'A', 'PLUS', ) t_A = r'a' t_ANY_PLUS = r'\+' t_ANY_ignore = ' \t\n' t_foo_A = r'b' def t_begin_foo(t): r's…
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) p tab.font_size tab.show_lines = :all tab.font_size = 20 data = [ { "col1" => "foo", "col2" => "bar", "col3" => "baz" }, ] …
Java FAQ:S007 Q-12 public class C2008032700 { public static void main(String[] args) { byte b; b = -1; b = (byte)(b >>> 1); System.out.println("b : " + b + " " + Integer.toHexString(b)); b = -1; b = (byte)((int)b >>> 1); System.out.printl…
#!/usr/bin/env python import ply.lex as lex tokens = ( 'A', 'PLUS', ) t_A = r'a' t_PLUS = r'\+' def t_error(t): print "Illegal character '%s'" % t.value[0] t.lexer.skip(1) lexer = lex.lex() lexer.input("a+a") print dir(lexer) print lexer.l…
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) p tab.show_headings tab.show_lines = :all tab.show_headings = false data = [ { "col1" => "foo", "col2" => "bar", "col3" => …
Java FAQ:S007 Q-11 public class C2008032600 { public static void main(String[] args) { byte b; int i; b = (byte)0xfd; i = b & 0xFF; System.out.println("b : " + b + " " + Integer.toHexString(b)); System.out.println("b : " + i + " " + Integ…
マニュアルによると、こういうこと? クラスで定義していないときは、以下のようにやれば良い。 これは、lex() を呼んで再度ルールなどを構築し直すよりも速い。 lexer = lex.lex() ... newlexer = lexer.clone() 一方、クラス定義した場合は、ちょっと考え…
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) p tab.title tab.title = "TITLE" p tab.title tab.show_lines = :all tab.show_headings = true data = [ { "col1" => "foo", "col…
Java FAQ:S007 Q-10 public class C2008032500 { public static void main(String[] args) { int i = Integer.parseInt("1.2"); System.out.println(i); } } で、 Exception in thread "main" java.lang.NumberFormatException: 1.2 at java.lang.Integer.p…
グローバル変数。複数の lexer に対応できない t.lexer.var のような lex 以外の prefix を持つ lexer のアトリビュート(var がアトリビュート名)。嫌われる場合あり。なんで? lexer クラスを作り、そのインスタンス変数
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) tab.show_lines = :all tab.show_headings = true tab.columns["col1"] = PDF::SimpleTable::Column.new("COL1") {|col| col.headin…
Java FAQ:S007 Q-09 public class C2008032400 { public static void main(String[] args) { // short a = 2; a = -a; // 精度が落ちている可能性 short a = 2; a = (short)-a; System.out.println(a); } } で、 -2
一つのファイルに複数のクラスを記述 #!/usr/bin/env python import ply.lex as lex class MyLexer1: tokens = ( 'A', 'PLUS', ) t_A = r'a' t_PLUS = r'\+' def t_error(self,t): print "Illegal character '%s'" % t.value[0] t.lexer.skip(1) # Build the…
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) tab.show_lines = :all tab.show_headings = true tab.columns["col1"] = PDF::SimpleTable::Column.new("COL1") {|col| col.headin…
Java FAQ:S007 Q-08 public class C2008032300 { public static void main(String[] args) { char c; int i; c = '0'; i = Character.digit(c, 10); System.out.println(i); i = 0; c = Character.forDigit(i, 10); System.out.println(c); c = '1'; i = Ch…
まんま #!/usr/bin/env python import ply.lex as lex class MyLexer: # List of token names. This is always required tokens = ( 'NUMBER', 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'LPAREN', 'RPAREN', ) # Regular expression rules for simple tokens t_…
require 'pdf/simpletable' pdf = PDF::Writer.new PDF::SimpleTable.new do |tab| tab.column_order = %w(col1 col2 col3) tab.show_lines = :all tab.show_headings = true tab.columns["col1"] = PDF::SimpleTable::Column.new("COL1") {|col| col.headin…
Java FAQ:S007 Q-07まんま public class C2008032201 { public static void main(String[] args) { String classname = "java.lang.Integer"; String value = "1"; Number n; if (classname.equals("java.lang.Integer")) { n = Integer.valueOf(value); } …
(複数の lexer に限った話ではないけど) d:id:noritsugu:20080309:parser で自分なりにやっていたが、マニュアルにも記述があった。 ルールだけ書けば良かったようだ。 lexer ルール 1 tokens = ( 'A', 'PLUS', ) t_A = r'a' t_PLUS = r'\+' def t_error(t):…