タグ

Programmingとnameに関するtyosuke2011のブックマーク (5)

  • 第9章 速習yacc

    概要 パーサとスキャナ プログラム言語のパーサの書きかたは昔からしつこく研究されてきており、 かなりしっかりした定石がある。よほど変な(または曖昧な)文法でない 限り、定石にのっていけば解決できるものだ。 まず最底辺には文字列を単語(トークンとも言う)の列に切り出す部 分がある。これをスキャナ(scanner)とかレクサ(lexer)と言 う。日語で言うと字句解析器だが、言いにくいのでスキャナと呼ぼう。 スキャナというものが出てくる根底にはそもそも「単語の区切りには空白ある でしょ」という常識がある。そして実際にたいていのプログラミング 言語はそういう仕様になっている。そのほうが楽だからだ。 例えば古いFortranでは空白が意味を持たなかった。つまり空白を入れても 単語区切りとは限らないし、変数の途中で何の前触れもなく空白を挿入したり することもできた。ところが解析が恐ろしく面倒なもの

  • 初級者から中級者にレベルアップするためのXcodeデバッグ術 - Think Big Act Local

    効率よくiOSアプリ開発を行うために、効率よくデバッグを行いたいですよね。 このエントリでは「print文を書く以外デバッグの方法を知らなかったあの頃の自分」を初級者と定義して、自分がやってるデバッグ方法について書いてみます。 Xcodeデバッグ術 1. printを使わずに変数の中身を確認する age, name, coverImage という以下の3つの変数が宣言されています。 let age = 27 let name = "Ryosuke Hiramatsu" let coverImage = UIImage(named: "sample.jpg") これらの変数の中身をチェックしたい時、printで出力するのでも良いですが、それでは出力する値を変えたくなった時(print(age)をprint(age*2+1)に変更とか)に再度ビルドが必要になって時間がかかります。 printで

    初級者から中級者にレベルアップするためのXcodeデバッグ術 - Think Big Act Local
  • よくあるエラー - 西尾泰和のはてなダイアリー

    初心者が出しがちなエラーメッセージに関して、エラーメッセージが英語だからと読まずに飛ばす人が多いかと思って和訳をJythonに書いていたんだけど、どうせならここで公開して他に陥りがちなエラーメッセージの情報を集めた方がいいんじゃないかと思った。 "__add__ nor __radd__ defined for these operands"「その計算の対象にしているオブジェクトには__add__も__radd__も定義されていないよ(足し算が定義されていないよ)」→数が入っているつもりの変数にNoneが入っていたりするとかありがち。数を返すはずの関数がreturnしわすれでNoneを返すとか。 "global name 'x' is not defined"「'x'という名前の変数が(グローバルまで探しに行ったけど)見つからなかったよ!つづり間違ってない?」 "NameError: n

    よくあるエラー - 西尾泰和のはてなダイアリー
  • Rubyの軽量Webフレームワーク「Sinatra」がステキ - このブログは証明できない。

    フルスタックがウリのRails。そこまで必要ないよ。と、ERBでゴリゴリ。メンドクセー。やっぱ、Railsで。などと、陽はまたのぼりくりかえしてーゆく。RubyのWebフレームワークは他にもあるけど。。軽くていいんだ。PHPを使いたくないだけなんだ。 そんな悩ましさを解消してくれるフレームワークを発見してしまいました。「Sinatra」でございます。こいつは、軽そうだ。 Sinatra サイトのトップページに書かれているコード。これが、サクサク感をかもし出してくれています。 require 'rubygems' require 'sinatra' get '/hi' do "Hello World!" end 説明読まなくても解るよ、これ。 日語の解説スライドがあります。よく解る解説ー。 公式サイトのREADMEを読めば、だいたいOK。 Sinatra: README パラメータを取得し

  • sscanf

    文字列から書式指定に従い入力 【書式】 #include <stdio.h> int sscanf(const char *str, const char *format, ... ); 【説明】 文字列strから書式formatにしたがって、scanf関数と同様の変換を行った入力を、指定されたアドレスに格納します。 要はscanfの入力がキーボードからではなく文字列strになると考えてください。 【引数】 const char *str : 入力元の文字列。 const char *format : 書式指定文字列。 詳しくはscanf関数参照のこと。 ... : 格納可変個引数。この引数が示すアドレスへ書式指定に従い入力します。 書式指定文字列はこの引数と同数必要です。 【戻り値】 成功時 : 入力データの個数 0にもなり得ます。例えばstrに"A"を、書式指定に"%d"を指定した場合

  • 1